﻿/*
 * @Author: zhouxiaofeng 1795065101@qq.com
 * @Date: 2025-01-09 23:38:11
 * @LastEditors: zhouxiaofeng 1795065101@qq.com
 * @LastEditTime: 2025-02-23 16:39:22
 * @FilePath: \myMusic\musiclist.h
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#ifndef MUSICLIST_H
#define MUSICLIST_H

#include "music.h"
#include <QVector>
#include <QUrl>

#include <QMimeType>
#include <QSqlQuery>
#include <QSqlError>
#include <QSet>

typedef typename QVector<Music>::iterator iterator;


class MusicList
{
public:
    MusicList();

    iterator begin();
    iterator end();

    iterator findMusicById(const QString& musicid);
    // 将QQMusic⻚⾯中读取到的⾳乐⽂件，检测是⾳乐⽂件后添加到musicList中
    void addMusicByUrl(const QList<QUrl>& urls);

    // 所有歌曲信息更新到数据库
    void writeToDB();

    //读取数据库中的歌曲信息
    void readMusicFromDb();

    void clearAllStatus() {
        for(auto& music : musicList) {
            music.setIsLike(false);
            music.setIsHistory(false);
        }
    }

private:
    QVector<Music> musicList; // Music类是⾃定义的C++类，描述歌曲相关信息

    QSet<QString> musicPaths;

};

#endif // MUSICLIST_H
